Sonic Pi(ソニックパイ)へようこそ。これから説明するクレイジーな音造りに、あなたも夢中になることを願っています。音楽、シンセ、プログラミング、作曲、演奏など、これから学ぶことは、本当に刺激的なものになるでしょう。
でも、ちょっと待ってください。まずは自己紹介が必要でしたね。失礼いたしました!私は、Sonic Piを作成したSam Aaronといいます。 Twitter上の@samaaronで見つけることができますので、連絡くれるとうれしいです。もしかすると、 僕が観客の前で演奏しているライブコーディングのバンドMeta-eXにも興味を持ってもらえるかもしれません。Meta-eXの演奏の中で使っているトラックの一つを、Sonic Piの例の中で見つけることができます。
Sonic Piを改善するために、気づいたことや、アイデアでを持っていたら、是非、知らせてください。 フィードバックはとても役立ちます。あなたのアイデアが次の重要な機能になるかもしれません!
最後に、このチュートリアル(使いかた)は、カテゴリ別にグループ化されたセクションに分かれています。 始まりから終わりまで、簡単に学べるように手引きを書いたので、自由に、色々なセクションを覗いてみてください。 何か、不足している点に気がついたら、将来のバージョンのために検討したいので、知らせてください。
では、早速はじめましょう!
Sonic Piの最もエキサイティングな側面のひとつは、まるでギターをライブで演奏するかのように、 ライブでコードを書いて音楽を作ることができることです。つまり、ステージやコンサートでSonic Piが 使えるということです!
これからチュートリアルで、実際のSonic Piの詳しい使い方に入る前に、まず、 ライブコーディングがどんなものか体験してみましょう。あまり(もしくは全然)わからなくても、 心配ご無用!そのまま席についたまま、楽しんでいきましょう。
さぁ、はじめましょう!下のコードを上の空欄のWorkspace(ワークスペース)にコピーしてみましょう。
live_loop :flibble do
sample :bd_haus, rate: 1
sleep 0.5
end
左上のRun(再生)ボタンを押すと、いい感じの速さでバスドラムの音が聞こえてきます。
Stop(停止)ボタンを押せば、いつでも音を止めることができます。ですが、
まだStop(停止)ボタンを押さずに、次のステップを実行しましょう。
sleepの値を、0.5から、1より大きい値に書き換えてみましょう。Run(再生)ボタンをもう一度押します。これは簡単でした。では他の要素を加えてみましょう。sample :bd_hausの上に、
sample :ambi_choir, rate: 0.3 を追加してみます。コードはこのようになるはずです。
live_loop :flibble do
sample :ambi_choir, rate: 0.3
sample :bd_haus, rate: 1
sleep 1
end
では、ちょっと遊んでみましょう。値を変えてみてください。大きな値、小さな値、もしくはマイナスの値にしたとき、
何が起こるでしょうか?では、:ambi_choir の rate: の値をほんの少し(0.29などに)変えた時、どうなるでしょう?
sleep の値をすごく小さくすると、どうでしょう?操作が速すぎると、エラーが出て
コンピュータが止まってしまいます。これはコンピュータがついていけないからです。
(そんな時は、より大きい値を sleep に設定してRunボタンをもう一度押しましょう。)
では、sample の行に # をつけることで、 「コメント」してみてください。
live_loop :flibble do
sample :ambi_choir, rate: 0.3
# sample :bd_haus, rate: 1
sleep 1
end
コンピュータに#をつけた行を無視するよう命令したので、聞こえませんね。これはコメントと呼ばれます。 Sonic Piでは、要素を削除したり追加したりするのにコメントを使います。 最後に、楽しむための技をお伝えしましょう。以下のコードを、上の空欄のWorkspace(ワークスペース)にコピーします。 そして、2つは同時にループ(繰り返し)します。まずは精一杯、体験して楽しみましょう!
いくつかを試してみましょう。
rate:の青い値を変更し、sampleの音が変わることを聞いてみましょう。sleepの時間を変更し、それぞれのループを異なる速度で繰り返すのを聞いてみましょう。sampleの行のコメントを解除して( #を削除)、ギターの逆再生を楽しみましょう。mix: の値を0 (最小値) から 1 (最大値)の間で変えてみましょう。Run ボタンを押し、次に繰り返しがどう変化したかに耳を傾けることを忘れないでください。
うまくいかなくても気にしないでください。Stopボタンを押して、Workspace内のコードを削除して、
新しいコードをコピーアンドペーストして、再び演奏の準備をすれば良いです。
失敗することがどんなことよりも学習の近道になるのですから。
live_loop :guit do
with_fx :echo, mix: 0.3, phase: 0.25 do
sample :guit_em9, rate: 0.5
end
# sample :guit_em9, rate: -0.5
sleep 8
end
live_loop :boom do
with_fx :reverb, room: 1 do
sample :bd_boom, amp: 10, rate: 1
end
sleep 8
end
さあ、これらが実際にどう動くか好奇心が動き出すまで、 そしてあなたが次に何をしたらいいかを知りたくなるまで、演奏と実験を続けましょう。 さあ、残りのチュートリアルを読む準備ができました。
次にあなたを待っているものは・・・
Sonic Piは、音楽をコーディング(記述)するための とてもシンプルなインターフェース(操作画面)を持っています。 ちょっと見てみましょう。

ここにあるグリーンのボタンで、音を再生したり停止するための主要な操作ができます。 Runボタンは編集画面内のコードを実行します。Stopボタンですべてのコードの動作を停止します。 Saveボタンは外部ファイルにコードを保存し、Recordボタンは演奏中の音を (WAV ファイルに)録音します。
これらのオレンジ色のボタンで編集画面を操作します。 Size +とSize -ボタンは文字サイズを大きくしたり小さくします。 Align ボタンはより専門的で見やすいコードに整えてくれます。
これらの青いボタンで、情報、ヘルプや設定にアクセスします。Info ボタンは、 概要、コア、協力者、コミュニティ、ライセンス、ヒストリーといったSonic Pi自体についての情報を画面に表示します。 HelpボタンはFのヘルプシステム表示を切り替えます。 またPrefsボタンは基本的なシステムを操作するための設定画面の表示を切り替えます。
ここでは音楽を作曲/演奏したりするためのコードを書く領域です。コードを書いたり、消したり、 切り取り、貼り付けなどを行うためのシンプルな編集画面です。Google Docsやワードの基礎版だと思ってください。 編集画面ではコードの意味合いに応じて自動で色つけします。はじめは変わっていると思うかもしれませんが、 とても使いやすくなるはずです。例えば、数値は青色で示されます。
コードを走らせた時、ログ画面にはプログラムがどうなっているかについての情報が表示されます。 既定では、正確な再生時間を毎音ごとにメッセージとして見ることができます。 コードのデバッグ(欠陥を取り除く作業)に利用でき、コードが何をしているかを理解することにも役立ちます。
最後は、SonicPiインターフェースのもっとも重要な部分の一つである、画面の下にあるヘルプシステムです。 青いHelpボタンによって表示/非表示を切り替えることができます。 ヘルプシステムは、ヘルプと情報を含んでいます。このチュートリアル、入手できるシンセのリスト、 サンプルや実例、効果のリスト、そして音楽をコーディングするために備えているSonic Piの 全機能のリストといった、Sonic Piの全てについてのヘルプと情報があります。
SonicPiは、遊びと実験を通して、コンピューティングと音楽の両方を学ぶ手助けをしてくれます。 もっとも大切なことは、楽しむこと。そうすれば、コードや作曲、演奏を、学ぶ前に自然と身につけられるでしょう。
この章の間に、何年も音楽とライブコーディングを学んできた私から、 ちょっとアドバイスを。
「間違いはない、あるのはただ可能性だけ。」
これは、しばしばジャズについて言われることですが、ライブコーディングにも同様に言えることです。 経験に関係なく、あなたが全くの初心者でも、熟練のコーディング使いでも、作り出すコードが まったく予期せぬ結果になることがあります。めちゃくちゃクールに聞こえる場合は、そのコードを実行すればいいのですが、しかし、すごく耳障りで場違いに聞こえる場合もあります。 ですが、そうなっても問題ではありません。重要なのは、あなたが次にすべきことです。 音を取り除き、それを操作し、素晴らしいものに変化させるのです。観衆は熱狂するでしょう。
学習していると、今すぐすごいことをしたい気持ちに駆られます。しかし、今はその気持ちをこらえ、 それは後に到達する遠い目標として持ってください。今のところは、あなたの頭の中にあるすごいことに向かう 価値ある小さな一歩として、楽しくやりがいをもって書くという「最も単純な事」を考えていきましょう。 一度、その誠実に学ぶイメージを持って、試し、それを構築し、そして再生していけば、斬新なアイデアを与えてくれるでしょう。 すぐに、あなたは、楽しみながら、確実に上達をすることに大忙しになっているでしょう。
でも、みんなと作品をシェア(共有)することは忘れないでください!
Sonic Piの紹介はこれくらいにして、さっそく音を試してみましょう!
この章では、基本的なシンセ(synth)の出し方と操作方法を紹介します。シンセは、 音を作り出すシンセサイザーという響きのよい言葉を短縮したものです。典型的なシンセは、 非常に使うのが複雑です。特にアナログのシンセは、沢山のパッチワイヤーとモジュールがついています。 ですが、Sonic Piでは、とても簡単で親しみやすい方法で、このシンセの力を手に入れることが出来ます。
Sonic Piの分かりやすくシンプルな操作画面に騙されないでください。 もし使いこなせたら、洗練されたサウンド操作を可能にします。きっと驚くはずです。
下記のコードをみてください:
play 70
ここからすべてが始まります。アプリの上部のコードウィンドウ(実行ボタンの下に大きな空白)にコピーして貼り付けます。そして、左上のRunボタンを押してみましょう。
ビックリした?もう一回、押してみましょう。そしてもう一回..。
わお!すごい!一日中楽しんで入られそうだけど、でも待って。 ビープ音の無限の流れに夢中になる前に、数値を変えてみましょう。
play 75
違いが分かりますか?より低い値も試してみましょう。
play 60
つまり、より低い値は低い音程(ピッチ)の音を、より高い値は高い音程(ピッチ)の音を鳴らします。
ちょうどピアノのように、低い部分の鍵盤(左手側)が低い音階を演奏し、高い部分の鍵盤(右手
側)が高い音階を奏でます。実は、数値は実際にピアノの鍵盤と関係しています。play 47は、実はピアノの47番目の鍵盤を演奏することを意味しています。play 48は一音上がる(右隣りの鍵盤)ということです。第4オクターブはCの60ということになります。
続いて、play 60を鳴らしてみましょう。
もし、これがあたなにとって何の意味かわからなくても心配しないでください。 わたしも始めた時は同じでした。いま重要なことは、低い数値は低い音を、高い数値は高い音を生み出す、ということを知っておくことです。
音符を奏でることはとても楽しいですが、同時にたくさんの音符を鳴らすとさらに楽しくなります。 これを試してみましょう。
play 72
play 75
play 79
華やかです!複数のplayを書くと、全て同時に演奏されます。自分で試してみましょう.
どの数値がいい組み合わせでしょうか?どれがひどい音?経験、探求しながら、自分自身で
見つけていきましょう。
音符と和音を演奏するのは楽しいですね。でも、メロディーの演奏はどうすればよいでしょうか?
一音ずつ、同時ではなく演奏したい場合は?それは簡単です。音符の間にsleepを入れば可能です。
play 72
sleep 1
play 75
sleep 1
play 79
なんて素敵なアルペジオ(和音を続けて弾くこと)!では、sleep 1の1は何を意味するのでしょうか?これは一拍休む、という意味ですが、とりあえず今は、一秒休む、と考えま
しょう。では、アルペジオをもう少し早くしたいと思ったら?それは、短い値を使えばよいのです。
例えば半分の値0.5ではどうでしょう?
play 72
sleep 0.5
play 75
sleep 0.5
play 79
早くなりましたね。では、自分で時間を変えてみましょう。違う時間と音符を使ってみましょう。
たとえばplay 52.3や play 52.63のような中間的な値でも演奏してみてください。
通常の全音符で演奏し続ける必要は、まったくありません。遊んで、楽しみましょう。

みなさんの中で、すでにいくつかの音楽記号を知っている人は、たとえば C とか F# などを使って メロディーを書きたいかも知れません(もしそうでなければ心配無用です、それを楽しむ必要はあり ません)。Sonic Piはそれをカバーしてくれます。以下のことをやってみましょう。
play :C
sleep 0.5
play :D
sleep 0.5
play :E
演奏する音階の前にコロン’:’を入れることを忘れないでください。コロンを置くと、Cが:Cのように色が変わります。
また、音名のあとに数値を追加してオクターヴを指定することもできます。
play :C3
sleep 0.5
play :D3
sleep 0.5
play :E4
半音♯(シャープ)にしたい場合は、’play :Fs3’のように音名の後に’s’を追加します。 半音♭(フラット)にしたい場合は、’play :Eb3’のように’b’を追加します。
夢中になって、自分の曲を作って楽しみましょう。
Sonic Piはあらゆる音を作りだし、コントロールするためのオプションの全てを提供します。 どんな音符を演奏するのか、そしてどんなサンプルをトリガー(きっかけ)にするのかはあなた次第です。 このチュートリアルでは、これらの多くをカバーするそれぞれについての詳細なドキュメントが ヘルプシステムにあります。しかし、これから最も有用なのうちの2つ、Amplitude(振幅)とPan(パン)を紹介します。 まずはオプションを見てみましょう。
Sonic Piはシンセのためにオプションという概念を備えています。
オプションは、あなたが耳にするサウンドの特徴をコントロールしたり、
変更するための手段で、演奏に反映されます。シンセはそれぞれ細かく音を
チューニングするためのオプションを持っています。
Sonic Piには、amp:(音量)やエンベロープ・オプション(ほかのセクションで紹介します)のような、
多くのサウンドに共通するオプションを持っています。
オプションには2つの主要な役割があり、ひとつはその名前(制御の名前)、もうひとつは
数値(あなたが制御したい値)です。例えば、cheese:いうオプションがあったとして、
1の値にセットしたいとします。
オプションは、playの後にカンマ,を入れて、その後、amp:`(コロン : を忘れずに)のような
オプションの名前、スペース、そしてオプションの値、というように渡していきます。例えば、
play 50, cheese: 1
(cheese: は無効なオプションです。例として使っています。)
カンマを使って区切り、複数のオプションを使用することができます。
play 50, cheese: 1, beans: 0.5
オプションの順番は問題ではないので、以下は同じものです。
play 50, beans: 0.5, cheese: 1
シンセで認識されないオプションは無視されます(cheese (チーズ)とbeans(豆)などは明らかに馬鹿げた名前でしょう!)
もし偶然同じオプションを2回、違う値で使った場合は、最後のものが有効になります。
例えば、ここでのbeans:は、0.5 ではなく 2 の値が採用されます。
play 50, beans: 0.5, cheese: 3, eggs: 0.1, beans: 2
Sonic Piの中の命令には多くのオプションが用意されているので、その使い方に ちょっとだけ時間を使って、習得しましょう!
それでは最初のオプションamp:で演奏してみましょう。
アンプは音の大きさをコンピュータで表したものです。高アンプは大きな音を生成し、 低アンプは静かな音を生み出します。Sonic Piは時間と音符を数字を使って表現するので、 アンプにも数字を使用します。1 の値が通常の音量であるのに対して、0はサイレントです(何もきこえませんよ)。 2、10、100 というふうに、アンプを上げることができます。ただし、全体の音を増幅しすぎると、 大きな音になりすぎないように、Sonic Piはコンプレッサー(圧縮)と呼ばれる 効果を使用して確実な音量に抑えることを覚えておいてください。これは多くの場合、音がこもって 奇妙に聞こえます。ですから、圧縮を防ぐために0から0.5のような値で使用してみてください。
音の大きさを変えるために、 amp: オプションを使います。 例として、半分の音量で演奏するために、0.5 にしてみます。
play 60, amp: 0.5
倍の音量で演奏するために、2 にしてみます。
play 60, amp: 2
amp:オプションは、関連付けられているplayへの命令だけを変更します。
ですから、この例では、最初の命令は半分の音量になり、次にはデフォルト(1の値)に戻ります。
play 60, amp: 0.5
sleep 0.5
play 65
もちろん、それぞれの命令で異なったamp:の値を設定して演奏することもできます。
~~~~
play 50, amp: 0.1
sleep 0.25
play 55, amp: 0.2
sleep 0.25
play 57, amp: 0.4
sleep 0.25
play 62, amp: 1
~~~~
もうひとつの面白いオプションはpan:です。ステレオで音の位置を制御します。
左に音をパンすることは左のスピーカーから音が聞こえることを意味し、
右にパンすれば右のスピーカーから聞こえます。値としては、-1 は最も左、
0 は中心、1 は最も右、というようにステレオの領域で表現することができます。
もちろん、音の正確な位置をコントロールするために、-1 から 1 の間のどの値でも使用することができます。
左のスピーカーから音を鳴らしてみましょう。
play 60, pan: -1
では、右のスピーカーから鳴らします。
play 60, pan: 1
最後に元の通り、中心から鳴らしてみます(通常の位置です)。
play 60, pan: 0
では、続けてあなたの音のアンプやパンを変えて楽しんでみましょう!
これまで、ビープ音を鳴らして楽しんできました。けれども、 もしかするとあなたはこのベーシックなビープ音に退屈し始めているかも知れません。 これがSonic piが提供してくれるサウンドの全てなのでしょうか?もちろん、ビープ音だけではなくて、 もっと他にもたくさんのライブコーディングがありますよね?はい、あります。 この章ではSonic Piが作り出すエキサイティングな音の領域へと探検していきましょう。
Sonic Piは、シンセサイザーの略であるシンセと呼ばれる楽器の機能を持っています。 サンプルがすでに録音された音であるのに対して、シンセはあなたがそれをコントロールすることに応じて 新しいサウンドを生み出すことができます(このチュートリアルの後半でみていきます)。Sonic Piのシンセは、 パワフルで表現力に富んでいて、探索しながら演奏したり、楽しめるはずです。 最初に、ひとまずここでシンセを使うために、選び方を学んでみましょう。
面白い音は、ノコギリ(saw)波です。試してみましょう。
use_synth :saw
play 38
sleep 0.25
play 50
sleep 0.25
play 62
sleep 0.25
他の音prophetを試してみましょう。
use_synth :prophet
play 38
sleep 0.25
play 50
sleep 0.25
play 62
sleep 0.25
2つを一緒にしたらどうでしょう。一方のあとに、もう一方を。 ~~~~
use_synth :saw play 38 sleep 0.25 play 50 sleep 0.25 use_synth :prophet play 57 sleep 0.25
では同時に。
use_synth :tb303 play 38 sleep 0.25 use_synth :dsaw play 50 sleep 0.25 use_synth :prophet play 57 sleep 0.25 ~~~~
use_synthコマンドは、 下のplayにだけ影響していることに注意してください。
大きなスイッチのようなものだと考えてください。指定したどんなシンセでも、
新しいplayへ命令として演奏されます。use_synthで新しいシンセにスイッチすることができます。
演奏するために Sonic Piがどんなシンセを備えているかを見るには、左端のメニュー(効果 の上)にあるシンセオプションを見てください。20以上が用意されています。これらは、わたしのお気に入りの数種類です。
:prophet:dsaw:fm:tb303:pulse音楽の中でシンセを切り替えて遊んでみてください。音楽の異なるセクションに違うシンセを使うように、 シンセを組み合わせて新しい音を作って楽しんでください。
前半のセクションでは、音を演奏したい時にどのようにsleepコマンドを
使用するかを見てきました。ですが、わたしたちはまだ音のデュレーション(長さ)について
制御できていませんね。
音のデュレーションを制御するための、パワフルでシンプルな手段として、 Sonic PiにはADSR amplitude envelope(ADSR・アンプ・エンベロープ)という 概念があります(ADSRが何を意味するかはこのセクションの後半で紹介します)。 アンプ・エンベロープは制御のための便利な2つの側面を持っています。
デュレーションは音の持続する長さのことです。長いデュレーションは、より長く音が 鳴ることを意味します。Sonic Piの全てのサウンドは、アンプ・エンベロープで制御でき、 ひとつのエンベロープ(音量や音色の時間的な変化)の長さは、音の長さでもあります。
ADSRエンベロープは、デュレーションの制御だけでなく、アンプ(音量)の緻密な 制御も可能にします。全てのサウンドは、サイレント(無音)で始まり、間に音があり、 またサイレントで終了します。エンベロープを使用すると、サウンドの音がある部分の音量を スライドさせたり、保持したりすることができます。これは、音楽の音量を上げたり下げたり するのを、誰かに指示するような感じです。例えば、あなたは誰かに「無音で始めて、 ゆっくりとフル・ボリュームにして、少しそのままで、そして一気に無音に戻る。」と頼むとします。 Sonic Piはエンベロープでこれをプログラムできるようにしてくれます。
前のセクションで見てきたように、アンプの0は無音、1は通常の音量です。
では、エンベロープのそれぞれの部分を順番に見ていきましょう。
エンベロープのうちデフォルトで使われている唯一の部分はリリース・フェーズです。 通常、全てのシンセのリリース・フェーズ(終わるまでの時間)は1で、 これは終了するまでに1ビート(デフォルトBPMの60の場合には1秒)のデュレーションを持っているということです。
play 70
この音は1秒間だけ聞こえます。続いて時間を指定しよう。 上の記述は、次の明示的で長い記述を簡略化したものです。
play 70, release: 1
これも全く同じように(1秒間持続する)音が出たと思います。
しかし、release:のオプションを変更することでとても簡単に
持続時間を変更することができるようになりました。
play 60, release: 2
また、非常に小さなリリース・フェーズの値を使って、シンセのサウンドをとても短くすることができます。
play 60, release: 0.2
音がリリースされるまでの持続時間はリリース・フェーズと呼ばれていて、 デフォルトではリニア・トランジション(直線的な移行、つまり真っ直ぐ)です。以下の図は、この移行を表したものです。

図の左端の縦の線は、サウンドが0の音量(ゼロ・アンプ)からスタートしていることを示しています。
しかし、すぐにフル・アンプに上がります(これは私たちが後で学ぶ、アタック・フェーズというものです)。
いったんフル・アンプになり、それからrelease:で指定した値を取りながら、直線的にゼロに下がります。
長いリリース・タイムは長いシンセ・フェード・アウト(徐々に消えること)を生成します。
これにより、リリース・フェーズを変更して、あなたのサウンドのデュレーションを 変えることができます。自分の音楽にリリース・タイムを追加して演奏してみましょう。
通常、アタック・フェーズは全てのシンセにおいて0です。つまり、0アンプから
1にただちに移動することを意味します。シンセは最初から音が打たれます。
けれども、あなたは音をフェード・イン(徐々に大きく)したいかも知れません。 これは、attack:のオプションで実現することができます。いくつかの音をフェード・インしてみましょう。
play 60, attack: 2
sleep 3
play 65, attack: 0.5
複数のオプションを使うこともできます。例えば、短いアタック、長いリリースに、変更してみましょう。
play 60, attack: 0.7, release: 4
この、短いアタックに長いリリースのエンベロープは、以下の図のように表します。

もちろん、ほかに変更することもできます。長いアタックに短いリリースを試してみましょう。
play 60, attack: 4, release: 0.7

そして、アタックとリリース両方短くして、短いサウンドにもできます。
play 60, attack: 0.5, release: 0.5

アタック・フェーズとリリース・フェーズの設定に付け加えて、サステイン・フェーズ(持続時間)を 指定することができます。サステイン・フェーズとは、アタックとリリースの間でフル・アンプの 音が鳴り続ける時間のことです。
play 60, attack: 0.3, sustain: 1, release: 1

サステイン・フェーズは、オプションのリリース・フェーズに入る前に、ミックスの中で主となる
存在感を与えたい重要なサウンドにとって有効です。もちろん、attack:とrelease:両方のオプションを
0に設定することもとても有効ですし、サウンドに対して、完全にフェード・インなし、
フェード・アウトなしにするためにサステインを使えば良いのです。けれど、注意してください、
0 のリリースはオーディオの中にクリック音を生成します。たいていの場合、0.2のような
ごく小さい値を使う方が良いです。
そして、今あなたがさらなる制御のレベルを必要としているならば、ディケイ・タイムというものを
設定することもできます。これは、アタックとサステインの間にくるエンベロープのフェーズで、
音量がattack_level:からdecay_level:(もしこれを明示的に指定しなければ、この値は sustain_level:と同じ値に設定されます)に落ちる時間を指定します。
通常では、decay:のオプションは 0 で、アタックとサステインのレベルは両方とも 1 です。ですから、ディケイ・フェーズで効果を得るには、アタック、サステインのレベルも指定しなくてはなりません。
play 60, attack: 0.1, attack_level: 1, decay: 0.2, sustain_level: 0.4, sustain: 1, release: 0.5

最後の仕掛けは、decay_level:オプションがデフォルトではsustain_level:と同じ値に設定されていて、エンベロープを完全に制御したい場合に明示的に別な値に設定できることです。
これにより次のようなエンベロープを作ることができるでしょう。
play 60, attack: 0.1, attack_level: 1, decay: 0.2, decay_level: 0.3, sustain: 1, sustain_level: 0.4, release: 0.5

またdecay_level:をsustain_level:より大きく設定することもできます。
play 60, attack: 0.1, attack_level: 0.1, decay: 0.2, decay_level: 1, sustain: 0.5, sustain_level: 0.8, release: 1.5

つまり要約すると、Sonic PiのADSRエンベロープには、以下のフェーズがあります。
attack_levelまでの時間attack_levelからdecay_levelまで移行させる時間decay_levelからsustain_levelまで移行させる時間sustain_levelから 0 に移行させる時間サウンドのデュレーションは、これらのフェーズの合計であることに注意することが大切です。 したがって、以下のサウンドは 0.5 + 1 + 2 + 0.5 = 4 で、4秒のデュレーションになります。
play 60, attack: 0.5, attack_level: 1, decay: 1, sustain_level: 0.4, sustain: 2, release: 0.5
ではあなたのサウンドにエンベロープを追加して演奏してみましょう。
あなたの音楽を発展させる方法は他にもあります。すでに録音された音を使うことです。偉大なヒップホップの伝統では、これらのあらかじめ録音された音のことを、サンプルと呼びます。つまり、マイクを持って外に出て、雨が優しくキャンバスを打つ音を録音しに行けば、それだけでサンプルを作ることができます。
Sonic Piは、サンプルで楽しいことがたくさんできるようになっています。90以上のパブリック・ドメイン(著作権がない)サンプルが、ジャム(即興演奏)するために同梱されているだけでなく、自分で操作して演奏することも可能にしてくれるのです。さっそくみていきましょう。
ビープ音を演奏するのは最初だけです。もっと面白いのは、録音済みのサンプルを使うことです。やってみましょう。
sample :ambi_lunar_land
Sonic Jam は演奏のためにたくさんのサンプルを持っています。playコマンドを使うようにサンプルを使えばよいのです。複数のサンプルで演奏するには、ひとつひとつ、順番に書いていきます。
play 36
play 48
sample :ambi_lunar_land
sample :ambi_drone
もし間を空けたいなら、 sleep を使います。
sample :ambi_lunar_land
sleep 1
play 48
sleep 0.5
play 36
sample :ambi_drone
sleep 1
play 36
最初のサウンドが終わる前に、次のサウンドが始まることに注意してください。sleepコマンドは、サウンドの開始の間隔だけを記述しています。これによって、簡単にサウンドを重ね合わせて、おもしろいオーバー・ラップ(重複)のエフェクト(効果)を生み出すことができるのです。
このチュートリアルの後半で、エンベロープでサウンドのduration(長さ)を制御する方法についてみていきます。
Sonic Piが収録しているサンプルの種類を知るには、2つの方法があります。一つ目は、このヘルプシステムを使うことです。下のメニューの中の、サンプルをクリックし、カテゴリを選ぶと、使用できるなサウンドのリストが表示されます。
あるいは、オート・コンプリーション(自動補完)システムを使うこともできます。 sample :ambi_のような複数のサンプルを束ねるグループ名をタイプし始めると、同じグループ内から選択できるサンプルの名前がドロップ・ダウンして表れます。以下のサンプル・グループの接頭語を入力してみましょう。
:ambi_:bass_:elec_:perc_:guit_:drum_:misc_:bd_さあ、あなたの曲でサンプルのミックスを始めてみましょう!
シンセの項目で見てきたように、パラメータで簡単にサウンドを制御することができます。
サンプルは全く同じパラメータの仕組みを備えています。何度も登場する、amp:と
pan:をもう一度見てみましょう。
シンセで使った書き方と全く同じ方法で、サンプルのアンプ(音量)を変えることができます。
sample :ambi_lunar_land, amp: 0.5
サンプルでpan:のパラメータを使うこともできます。例えば、定番のドラムフレーズの
アーメン・ブレイクを左耳で聞いた後に、半分は通過して再度右耳で聞く方法です。
sample :loop_amen, pan: -1
sleep 0.877
sample :loop_amen, pan: 1
0.877 は、:loop_amenサンプルの半分の再生時間であることに注意してください。
そして、use_synth_defaults(あとで説明します)をシンセに設定している場合、
サンプルはこれを無視して再生します。
すでに私たちは、音楽を作るために様々なシンセやサンプルを演奏することができます。そろそろ、音楽をもっとユニークで面白くするために、シンセとサンプルを編集する方法を学ぶ時間です。まずは、サンプルを引き延ばしたり圧縮する方法をみてみましょう。
サンプルとは、あらかじめ録音されたサウンドで、サウンドを再生するためにスピーカーのコーン(振動板)をどう動かすかを表す数値が格納されています。スピーカーのコーンは行ったり来たり(振動)するため、数値は、その時々でコーンがどれくらいの距離を行ったり来たりすべきかをその時々で表す必要があります。録音された音を忠実に再生するために、サンプルは概して1秒間に何千もの数値を格納しておく必要があるのです!Sonic Piはこの数値のリストを使って、適切なスピードでサウンドを再生するための正しい方法をあなたのコンピューターのスピーカーに伝え、振動させるのです。けれども、サウンドを変えるためにスピーカーに与えられる数値のスピードを変えるのも楽しいですよ。
アンビエント・サウンドのひとつ、:ambi_choirで演奏してみましょう。デフォルト(既定値)で演奏するには、sampleにrate: のオプションを渡します。
sample :ambi_choir, rate: 1
これはデフォルト(既定値)のレート(速度)1で演奏するので、まだ何も変わったところはありません。ですが、数値を何か他の値に変えてもよいのです。0.5はどうでしょう。
sample :ambi_choir, rate: 0.5
ワオ!何が起きたのでしょう?そう、2つのことが起こりました。一つ目は、サンプルは再生に2倍の時間をかけていました。二つ目は、サウンドは1オクターブ低くなっていました。もう少し詳しく、これらのことを探ってみましょう。
引き延ばしたり圧縮したりして楽しいサンプルは、定番のアーメン・ブレイクです。 通常のレートでは、ドラムン・ベース(音楽ジャンルのひとつ)のトラックを思わせます。
sample :loop_amen
:loop_amenですが、レート(速度)を変えると、音楽のジャンルが切り替わったように聞こえます。 半分のスピードにすると、オールドスクールのヒップホップに。
sample :loop_amen, rate: 0.5
スピードを上げると、ジャングルのジャンルになりますね。
sample :loop_amen, rate: 1.5
では、パーティーの最後の仕掛けに、マイナスのレートを使うと何が起きるでしょうか。
sample :loop_amen, rate: -1
ワオ!逆再生!いろいろな異なったサンプルで、異なったレートで演奏してみましょう。ものすごく速い数値や、おかしなくらいゆっくりになる数値を使って、どんなおもしろいサウンドを作れるか、試してみましょう。
サンプルは、バネのように考えると便利です。再生速度(プレイバック)は、バネを縮めたり伸ばしたりするようなものです。もしサンプルをレート 2 で再生した場合、通常の長さの半分に、バネを縮めることになります。ですので、サンプルは半分の時間で演奏するので、より短くなります。もしサンプルを半分のレートで再生した場合、2倍の長さにバネを伸ばすことになります。そのため、サンプルは再生に2倍の時間をかけるため、より長くなるのです。もっと縮める(レートを上げる)と、短く再生され、さらに伸ばす(レートを下げる)と、さらに長く再生されます。 バネを縮めることは、その密度(1cm あたりのコイルの数)を増やすことです。これは高いピッチ(音程)のサンプルに近づくことになります。バネを伸ばすことは、密度を減らすことで、低いピッチ(音程)のサウンドに近づいていきます。
(このセクションはさらに細かい部分に興味がある人向けです。飛ばしても構いませんよ・・・。)
上記で見てきたように、サンプルは、スピーカーが一定の時間でどのように振動すべきかを表現した長大な 数値のリストによって表されています。この数値のリストで、これと同じようなグラフを描いてみます。

あなたはこれと同じような図を、以前に見たことがあるかも知れません。これはサンプルの波形と呼ばれるものです。これは数値のグラフです。このような波形はだいたい、1秒間に44100ポイントのデータを有しています(これはナイキスト・シャノンのサンプリング定理によるものです)。サンプルが2秒間続くなら、スピーカーに1秒間に44100ポイントのレート(長さ)を与えることで88200の数値で表現されます。もちろん、1秒間に88200ポイントで、2倍のレートとすることもできます。ですので、これは1秒間で再生されます。1秒間に22050ポイントで、半分のレートで再生することも可能です。この場合、4秒で再生されます。
サンプルのデュレーションは、再生するレートに影響を与えます。
これを以下の数式で表します。
new_sample_duration = (1 / rate) * sample_duration
再生レートを変えることは、サンプルのピッチ(音程)にも影響します。周波数や波形のピッチがどれくらい速く上下に動くかで決定されます。我々の脳は、どういうわけか、スピーカーの速い動きを高い音階に、遅い動きを低い音階に捉えます。だからあなたは時々、大きなベース・スピーカーが超低音を吐き出すのを見ることができるのです。実際に高い音を出しているときのスピーカーよりも、ゆっくりと振動しているのです。
もし波形を取り出して圧縮したら、1秒間でさらに頻繁に上下します。これがサウンドをより高い音にするのです。 上下の運動を2倍にすると、周波数が2倍になるということになります。 そのため、サンプルを2倍のレートで再生すると、聞こえる周波数が2倍になるということです。 また、レートを半分にすると、周波数が半分になるということでもあります。他のレートはそれに応じて周波数に影響します。
ADSRエンベロープを用いて、サンプルのデュレーション(再生時間)とアンプ(音量)を編集することもできます。しかしながら、シンセのADSRエンベロープとは少しだけ異なったように作用します。サンプルに使用するエンベロープは、サンプルのアンプとデュレーションを減らすことしかできません。決して増やすことはできないのです。サンプルは、それが再生され終わったときか、エンベロープが完了したときのいずれかで停止します。どちらが先でも停止します。非常に長いrelease:を使ったとしても、サンプルのデュレーションは延長されません。
わたしたちのお気に入りのフレーズ、アーメン・ブレイクに戻ります。
sample :loop_amen
オプションが設定されていない場合、全サンプルがフル・アンプ(最大音量)で聞こえます。
もし1秒間のフェード・インを使いたい場合、attack:パラメータを使います。
(フェード・インとは徐々に音が大きくなることです。)
sample :loop_amen, attack: 1
もっと短いフェード・インの場合は、attack:の値を小さくします。
sample :loop_amen, attack: 0.3
ADSR エンベロープの特徴が標準的なシンセ・エンベロープと異なる点は、サステイン(持続時間)の値です。 標準的なシンセのエンベロープでは、もし手動で変更しなければ、 0 に設定されています。ですが、 サンプルでは、サステインの値は通常、魔法のように全自動にセットされます。サステインの時間は、サンプルの残りを 演奏するように調整されます。デフォルトの値を渡さないときに、サンプルがフルで流れるのはこのためです。 アタック、ディケイ、サステイン、リリース(この4つの頭文字がADSR)の値が全て 0 のときは、何の音も聞こえません。 Sonic Piはサンプルの長さがどれくらいなのか計算し、アタック、ディケイ、リリース・タイムを差し引いて、 あなたのサステイン・タイムの結果を使用します。もし、アタック、ディケイ、リリースの値が サンプルのデュレーションより長く追加された場合、サステインは 0 にセットされます。
これまでのことをを求するために、我らがアーメン・ブレイクをさらに詳細にみてみます。Sonic Piにサンプルがどれくらいの長さなのか尋ねてみます。
print sample_duration :loop_amen
1秒間のサンプルの長さは 1.753310657596372 と答えるでしょう。ここでは、便宜的に1.75 としますリリース・タイムを 0.75 にすると、驚くべきことが起こります。
sample :loop_amen, release: 0.75
サンプルの最初の1秒をフル・アンプで再生し、最後の 0.75 秒はフェード・アウトします。これが オート・サステインの動きです。標準では、release:はいつもサンプルの最後から動作します。
もしサンプルの長さが10.75 秒なら、最初の10秒はフル・アンプで再生し、最後の0.75秒はフェード・アウトします。
通常、release:はサンプルの最後でフェード・アウトするということを覚えておいてください。
サンプルのデュレーションの間にフェード・アウトとインを行うには
attack:とrelease:の両方を使うことができます。オート・サステインの仕組みと一緒に、
使用できます。
sample :loop_amen, attack: 0.75, release: 0.75
サンプルのアーメンブレイク全体のデュレーションは1.75秒なので、 アタックとリリースの時間が1.5秒まで追加されると、 サステインは自動的に0.25秒にセットされます。 これで簡単にサンプルをフェード・イン、アウトすることができます。
手動でsustain:を 0 などにセットして、通常のADSRシンセの挙動に簡単に戻すこともできます。
sample :loop_amen, sustain: 0, release: 0.75
いま、サンプルはトータルで0.75秒間だけ再生されました。attack:とdecay:の通常値0ですので、
サンプルはフル・アンプ(最大音量)に直接変わり、0秒間サスティン(持続)し、リリースの0.75秒間で0アンプに戻ります。
この仕様を、長いサウンドのサンプルを短く、より打楽器的にするために、効果的に使うことができます。
:drum_cymbal_open:
sample :drum_cymbal_open
上のサンプルでは一定時間シンバルの音が鳴っているのが聞こえます。ですが、もっとパーカッシブ(打楽器的)にしてみましょう。
sample :drum_cymbal_open, attack: 0.01, sustain: 0, release: 0.1
シンバルを叩いた後のサスティン(持続時間)を増やすことで、響かせるような効果も出すすることができます。
sample :drum_cymbal_open, attack: 0.01, sustain: 0.3, release: 0.1
今すぐ、サンプルを楽しくさせるエンベロープをいじってみましょう。 面白い結果を得るために数値を思いきり変更してみましょう。
このセクションでは、Sonic Piのサンプルの再生について私たちが探求してきたことをまとめます。 簡単にまとめてみましょう。
これまで、サンプルを再生する方法をみてきました。
sample :loop_amen
まず、サンプルのレート(速さ)を変更する方法を見つけて、このように半分の速度で再生してみました。
sample :loop_amen, rate: 0.5
次に、サンプルを徐々に大きくするフェードインを知りました。 (半分の速度でやってみましょう)
sample :loop_amen, rate: 0.5, attack: 1
また、sustain:に明確な値とアタックとリリースの両方の短い値を設定することで、
サンプルを打楽器のように使用する方法を見つけました。
sample :loop_amen, rate: 2, attack: 0.01, sustain: 0, release: 0.35
では、いつもサンプルの先頭から開始する必要はあるのでしょうか? そして、いつもサンプルの最後まで終了する必要はあるのでしょうか?
サンプルのどこからでも、好きな場所を選んで音を再生することが可能です。 0はサンプルの開始で、1は終了です。0.5はサンプルの途中です。 アーメンブレイクの最後の半分を再生してみましょう。
sample :loop_amen, start: 0.5
どのようにすればサンプルの最後の1/4を再生できますか?
sample :loop_amen, start: 0.75
同様に、サンプルの0から1の間の値を終了点として選ぶことができます。 アーメンブレイクの半分までで終わらせてみましょう。
sample :loop_amen, finish: 0.5
もちろん、私たちは好きな部分を再生するために、これまでの開始と終了の2つを組み合わせることができます。 どのようにすれば真ん中あたりの短い場所だけを選べるのでしょうか?
sample :loop_amen, start: 0.4, finish: 0.6
もし、終了位置のあとを、開始位置として選ぶとどうなるでしょう?
sample :loop_amen, start: 0.6, finish: 0.4
かっこいい!!!逆再生になりますね!
そして新しい機能として、すでに学んだrate:とstart:(開始)とfinish:(終了)を使った部分再生を組み合わせることができます。
sample :loop_amen, start: 0.5, finish: 0.7, rate: 0.2
そして、面白い結果を創りだすために、ADSRエンベロープと、いままでの全てを組み合わせることができます。
sample :loop_amen, start: 0.5, finish: 0.8, rate: -0.2, attack: 0.3, release: 1
今すぐ、サンプルとこれまでに紹介した楽しい内容を組み合わせて演奏してみましょう!
内蔵のサンプルは、すぐに使用でき、再生することができる一方で、 あなたは別に録音された音を試してみたいと願うかもしれません。 Sonic Piは完全にこの願いを叶えます。 まずは、あなたの部品(録音した音)の携帯性について、確認してみましょう。
あなたが、内臓のシンセやサンプルだけを使って作曲した場合、 コードだけがは、あなたが音楽を忠実に再生ために必要なものになります。でもちょっと 考えてみてください。それは、実はとても凄いことなのですよね!あなたの音楽を忠実に再現する作品は、 テキストによるシンプルなものなので、電子メールで周りに送ったり、 Gistに埋め込んで公開することができます。コードを持っていれば 友人と本当に簡単に共有することができます。
しかし、もしあなたが、自身で記録したサンプルを使ってしまうと、この携帯性が 失われてしまいます。なぜならば、あなたの音楽を他の人達が再現しようとしても、 あなたのコードだけでは再生することができず、記録したサンプルが必要になってしまうからです。 この事は、あなたの音楽を他の人が操作したり編集したり、試してみることを制限してしまう ことがあるということです。もちろん、あなた自身が録音したサンプルを使うことを 止めるということではなく、方法(データを送って、正しく共有するなど)に配慮していけばよいという事です。
では、どうやって、あなたが録音したWAVファイルやAIFFファイルをコンピュータで再生する